home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / crobots8.zip / XHATCH.R < prev   
Text File  |  1989-12-15  |  3KB  |  86 lines

  1. /*  XHATCH        */
  2. /*                */
  3. /* Strategies:    */
  4. /*                */
  5. /*  Movement: Diamond pattern as close to the border as possible           */
  6. /*      to maximize the amount of time the robot moves at top speed.       */
  7. /*                                                                         */
  8. /*                                                                         */
  9. /*                */
  10. int range;
  11. int angle;
  12. int count;
  13. int delta;
  14. int resolution;
  15. int var;
  16. int backward_step;
  17. /* main */
  18. main(){
  19.   int speed;
  20.   int border;
  21.   angle=0;
  22.   backward_step=5;
  23.   speed=100;
  24.   resolution=10;
  25.   var=resolution;
  26.   border= 55;          /* Change movement border    */
  27.  
  28.     drive (180,speed);                /* go west, young robot        */
  29.     while (loc_x()>border && speed() > 0 ) attack();  /* Keep-a-goin */
  30.     drive (180,0);                                    /* STOP        */
  31.     while (speed() > 49) attack();                    /* wait        */
  32.  
  33.     drive (90,speed);         /* north */
  34.     while (loc_y()<1000-border && speed() > 0 ) attack();
  35.     drive (90,0);
  36.     while (speed() > 49) attack();
  37.  
  38.     /*  Now we are in upper left corner, begin Hourglass pattern */
  39.  
  40.  while (1) {
  41.  
  42.     drive (315,speed);                /* SouthEast                   */
  43.     while (loc_x()<1000-border && loc_y()>border && speed() > 0 ) attack();  /* Keep-a-goin */
  44.     drive (315,0);                                    /* STOP        */
  45.     while (speed() > 49) attack();                    /* wait        */
  46.  
  47.     drive (90,speed);         /* north */
  48.     while (loc_y()<1000-border && speed() > 0 ) attack();
  49.     drive (90,0);
  50.     while (speed() > 49) attack();
  51.  
  52.     drive (225,speed);         /* SouthWest  */
  53.     while (loc_x()>border && loc_y()>border && speed() > 0 ) attack();
  54.     drive (225,0);
  55.     while (speed() > 49) attack();
  56.  
  57.     drive (90,speed);       /* North */
  58.     while (loc_y()<1000-border && speed() > 0 ) attack();
  59.     drive (90,0);
  60.     while (speed() > 49) attack();
  61.  
  62.  };                        /* forever */
  63. }
  64. attack(){
  65.      int cannon_yet;
  66.      angle+=2*var;
  67.      cannon_yet=0;
  68.      while (!cannon_yet && (range = scan(angle,var ))>0 ) {
  69.         if (range<740) cannon_yet=cannon(angle,range);
  70.         else  cannon_yet=1; }  
  71.    if (cannon_yet)  {
  72.         if (var>1) {
  73.            var>>=1;
  74.            angle-=3*var;
  75.            count=0;          }
  76.         else  angle-=2*var;
  77.                       }
  78.      else {
  79.         if ((++count)==2) { var=resolution;
  80.                           angle-=backward_step*var;
  81.                             }
  82.            } 
  83.         }
  84.  
  85.  
  86.